﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using System.Data;
using AcadPosApp.Utilidades;

namespace AcadPosApp.Lancamentos
{
    public partial class NotasFaltas : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaAreasConhecimento();
                carregarEstados();
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
                pnlNotas.Attributes.Add("onkeydown", "setaFoco(this)");
                pnlFrequencia.Attributes.Add("onkeydown", "setaFoco(this)");
            }
        }

        private void carregarEstados()
        {
            ddlEstado.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstado.DataTextField = "ESTADO";
            ddlEstado.DataValueField = "ID_ESTADO";
            ddlEstado.DataBind();
            ddlEstado.Items.Insert(0, "Selecione");
        }

        private void carregaPolos()
        {
            if (ddlEstado.SelectedValue != "")
            {

                Polo polo = new Polo();
                polo.IdEstado = Convert.ToInt32(ddlEstado.SelectedValue);
                DataTable dt = ControlClass.CNPolo.listaPolosEstado(polo);
                ddlPolo.DataSource = dt;
                ddlPolo.DataTextField = "DESCRICAO";
                ddlPolo.DataValueField = "ID_POLO";
                ddlPolo.DataBind();
                if (dt.Rows.Count <= 0)
                {
                    ddlPolo.Enabled = false;
                    ddlPolo.Items.Clear();
                }
                else
                {
                    ddlPolo.Enabled = true;
                    ddlPolo.Items.Insert(0, "Selecione");
                }
            }
            else
            {
                ddlPolo.Enabled = false;
                ddlPolo.Items.Clear();
            }
        }

        private void carregaAreasConhecimento()
        {
            AreaConhecimento area = new AreaConhecimento();
            area.Descricao = string.Empty;
            ddlAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
            ddlAreaConhecimento.DataTextField = "DESCRICAO";
            ddlAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
            ddlAreaConhecimento.DataBind();
        }

        private void carregaGridPesquisa()
        {
            gvwPesquisa.Visible = true;
            Curso curso = new Curso();
            curso.Descricao = txtPesquisa.Text;
            curso.IdAreaConhecimento = Convert.ToInt32(ddlAreaConhecimento.SelectedValue);
            DataTable dtCursos = ControlClass.CNCurso.listarCursos(curso);
            DataView dtCursosAtivos = dtCursos.AsDataView();
            dtCursosAtivos.RowFilter = "SITUACAO = 'A'";
            gvwPesquisa.DataSource = dtCursosAtivos;
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }

        private void carregaCurriculosCurso()
        {
            ddlCurriculoPesquisa.Enabled = true;
            ddlCurriculoPesquisa.Items.Clear();
            Curriculo curriculo = new Curriculo();
            curriculo.IdCurso = Convert.ToInt32(gvwPesquisa.SelectedValue);
            DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
            ddlCurriculoPesquisa.DataSource = dt;
            ddlCurriculoPesquisa.DataTextField = "COD_CURRICULO_SITUACAO";
            ddlCurriculoPesquisa.DataValueField = "ID_CURRICULO";
            ddlCurriculoPesquisa.DataBind();
            ddlCurriculoPesquisa.Items.Insert(0, new ListItem("Selecione", ""));
            if (dt.Rows.Count <= 0)
            {
                ddlCurriculoPesquisa.Enabled = false;
                ddlCurriculoPesquisa.Items.Clear();
            }
            else
            {
                ddlCurriculoPesquisa.SelectedIndex = 1;
                carregaModulosCurriculo();
            }
        }

        private void carregaModulosCurriculo()
        {
            if (gvwPesquisa.SelectedIndex > -1 && ddlCurriculoPesquisa.SelectedValue != "")
            {
                ddlModuloPesquisa.Enabled = true;
                ModuloCurriculo moduloCurriculo = new ModuloCurriculo();
                moduloCurriculo.IdCurriculo = Convert.ToInt32(ddlCurriculoPesquisa.SelectedValue);
                DataTable dt = ControlClass.CNModuloCurriculo.listaModulosCurriculo(moduloCurriculo);
                ddlModuloPesquisa.DataSource = dt;
                ddlModuloPesquisa.DataTextField = "MODULO_SITUACAO";
                ddlModuloPesquisa.DataValueField = "ID_MODULO_CURRICULO";
                ddlModuloPesquisa.DataBind();
                if (dt.Rows.Count <= 0)
                {
                    ddlModuloPesquisa.Items.Clear();
                    ddlModuloPesquisa.Enabled = false;

                    ddlDisciplinas.Enabled = false;
                    ddlDisciplinas.Items.Clear();

                    ddlEstado.Enabled = false;
                    ddlEstado.SelectedIndex = 0;

                    ddlPolo.Items.Clear();
                    ddlPolo.Enabled = false;

                    ddlTurmas.Items.Clear();
                    ddlTurmas.Enabled = false;
                }
                else
                {
                    ddlModuloPesquisa.Items.Insert(0, "Selecione");
                    ddlModuloPesquisa.SelectedIndex = 1;
                    carregaDisciplinasModulo();
                    ddlEstado.Enabled = true;
                    ddlEstado.SelectedValue = "1";
                    carregaPolos();
                    ddlPolo.Enabled = true;
                    ddlPolo.SelectedIndex = 1;
                    carregaTurmas();
                    ddlTurmas.Enabled = true;
                }
            }
            else
            {
                ddlModuloPesquisa.Items.Clear();
                ddlModuloPesquisa.Enabled = false;

                ddlDisciplinas.Enabled = false;
                ddlDisciplinas.Items.Clear();

                ddlEstado.Enabled = false;
                ddlEstado.SelectedIndex = 0;

                ddlPolo.Items.Clear();
                ddlPolo.Enabled = false;

                ddlTurmas.Items.Clear();
                ddlTurmas.Enabled = false;
            }
        }

        private void carregaTurmas()
        {
            Turma turma = new Turma();
            turma.IdCurriculo = Convert.ToInt32(ddlCurriculoPesquisa.SelectedValue);
            turma.IdPolo = Convert.ToInt32(ddlPolo.SelectedValue);
            ddlTurmas.DataValueField = "ID_TURMA";
            ddlTurmas.DataTextField = "COD_TURMA";
            ddlTurmas.DataSource = ControlClass.CNTurma.listaTurmas(turma);
            ddlTurmas.DataBind();
            ddlTurmas.Items.Insert(0, "Selecione");
            ddlTurmas.Enabled = true;
        }

        private void carregaDisciplinasModulo()
        {
            MatrizCurricular matriz = new MatrizCurricular();
            matriz.IdModuloCurriculo = Convert.ToInt32(ddlModuloPesquisa.SelectedValue);
            ddlDisciplinas.DataValueField = "ID_DISCIPLINA";
            ddlDisciplinas.DataTextField = "DESCRICAO_DISCIPLINA";
            ddlDisciplinas.DataSource = ControlClass.CNMatrizCurricular.listarDisciplinasModuloCurriculo(matriz);
            ddlDisciplinas.DataBind();
            ddlDisciplinas.Items.Insert(0, "Selecione");
            ddlDisciplinas.Enabled = true;
            ddlDisciplinas.SelectedIndex = 1;
            carregarEstados();
        }

        protected void ddlCurriculoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaModulosCurriculo();
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregaGridPesquisa();
        }

        protected void ddlAreaConhecimento_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = false;
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
            ddlModuloPesquisa.Items.Clear();
            ddlModuloPesquisa.Enabled = false;
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregaGridPesquisa();
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaCurriculosCurso();
            //ddlModuloPesquisa.Items.Clear();
            //ddlModuloPesquisa.Enabled = false;
        }

        protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaPolos();
            ddlPolo.Enabled = true;
        }

        protected void ddlPolo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlPolo.SelectedIndex > 0)
            {
                carregaTurmas();
            }
            else
            {
                ddlTurmas.Items.Clear();
                ddlTurmas.Enabled = false;
            }
        }

        protected void ddlModuloPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlModuloPesquisa.SelectedIndex > 0)
            {
                carregaDisciplinasModulo();
            }
            else
            {
                ddlDisciplinas.Enabled = false;
                ddlDisciplinas.Items.Clear();

                ddlEstado.Enabled = false;
                ddlEstado.SelectedIndex = 0;

                ddlPolo.Items.Clear();
                ddlPolo.Enabled = false;

                ddlTurmas.Items.Clear();
                ddlTurmas.Enabled = false;
            }
        }


        protected void ddlDisciplina_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlDisciplinas.SelectedIndex > 0)
            {
                ddlEstado.Enabled = true;
                ddlEstado.SelectedValue = "1";
                carregaPolos();
                ddlPolo.Enabled = true;
                ddlPolo.SelectedIndex = 1;
            }
            else
            {
                ddlEstado.Enabled = false;
                ddlEstado.SelectedIndex = 0;

                ddlPolo.Items.Clear();
                ddlPolo.Enabled = false;

                ddlTurmas.Items.Clear();
                ddlTurmas.Enabled = false;
            }
        }

        protected void btnPesquisar_Click(object sender, EventArgs e)
        {
            mostrarPanelLancamento();
            carregarNotasFrequencia();
            //if (rbTipo.SelectedValue == "Frequência")
            //{

            //}
            //else if (rbTipo.SelectedValue == "Notas")
            //{
            //    pnlNotas.Visible = true;
            //    carregarNotasFrequencia();
            //}
        }

        private void mostrarPanelLancamento()
        {
            pnlFrequencia.Visible = rbTipo.SelectedValue == "Frequência";
            pnlNotas.Visible = rbTipo.SelectedValue == "Notas";
        }

        protected void rbTipo_SelectedIndexChanged(object sender, EventArgs e)
        {
            mostrarPanelLancamento();
        }

        protected void gvwLancNotas_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gvwLancNotas.EditIndex = -1;
            gvwLancNotas.SelectedIndex = -1;
            carregarNotasFrequencia();
        }

        private void carregarNotasFrequencia()
        {
            string pTurma = ddlTurmas.SelectedItem.Text;
            int pCodDisc = Convert.ToInt32(ddlDisciplinas.SelectedValue);
            if (rbTipo.SelectedValue == "Notas")
            {
                gvwLancNotas.DataSource = ControlClass.CNTurma.getNotasFrequencias(pTurma, pCodDisc);
                gvwLancNotas.DataBind();
            }
            else if (rbTipo.SelectedValue == "Frequência")
            {
                gvwLancFrequencia.DataSource = ControlClass.CNTurma.getNotasFrequencias(pTurma, pCodDisc);
                gvwLancFrequencia.DataBind();
            }
        }

        protected void gvwLancNotas_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvwLancNotas.EditIndex = gvwLancNotas.SelectedIndex = e.NewEditIndex;
            carregarNotasFrequencia();

            GridViewRow gvrSelecionado = null;
            if (gvwLancNotas.EditIndex < gvwLancNotas.Rows.Count)
                gvrSelecionado = gvwLancNotas.Rows[gvwLancNotas.EditIndex];

            gvwLancNotas.SelectedRow.Cells[2].Focus();
        }

        protected void gvwLancNotas_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                float nota1 = 0;
                float nota2 = 0;
                bool lancou1 = false;
                bool lancou2 = false;
                int pID = Convert.ToInt32(gvwLancNotas.DataKeys[gvwLancNotas.EditIndex]["ID_MATRICULA_DISCIPLINA"].ToString());
                GridViewRow gvwSelecionado = gvwLancNotas.Rows[gvwLancNotas.EditIndex];
                if (!((TextBox)gvwSelecionado.FindControl("txtNota1")).Text.Equals(""))
                {
                    nota1 = float.Parse(((TextBox)gvwSelecionado.FindControl("txtNota1")).Text);
                    lancou1 = true;
                }
                if (!((TextBox)gvwSelecionado.FindControl("txtNota2")).Text.Equals(""))
                {
                    nota2 = float.Parse(((TextBox)gvwSelecionado.FindControl("txtNota2")).Text);
                    lancou2 = true;
                }
                if (lancou1 && lancou2)
                {
                    if ((nota1 > 0 && nota1 <= 10) && (nota2 > 0 && nota2 <= 10))
                    {
                        //Lançar Nota
                        if (ControlClass.CNTurma.lancarNotasAluno(pID, nota1, nota2))
                        {

                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroSimples, "")), true);
                        }
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "As notas devem está entre 0 e 10.")), true);                    
                    }
                }

            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
            }

            if (gvwLancNotas.SelectedIndex < (gvwLancNotas.Rows.Count - 1))
            {
                gvwLancNotas.EditIndex = gvwLancNotas.SelectedIndex += 1;
                gvwLancNotas_RowEditing(this, new GridViewEditEventArgs(gvwLancNotas.EditIndex));
            }
            else if (gvwLancNotas.SelectedIndex == (gvwLancNotas.Rows.Count - 1))
            {
                gvwLancNotas.EditIndex = gvwLancNotas.SelectedIndex = -1;
                carregarNotasFrequencia();
            }
        }
    }
}